package com.yk.ykmessagesdk.utils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.lang.reflect.Type;

public class GsonUtils {

    private static Gson gson = new GsonBuilder().create();

    /**
     * 将对象转换成JSON字符串。
     *
     * @param obj 要转换的对象
     * @return JSON字符串
     */
    protected static String toJson(Object obj) {
        try {
            return gson.toJson(obj);
        } catch (Exception e) {
            LogUtils.logger("toJson:"+e.toString());
            throw new NullPointerException("Failed to serialize object to JSON string");
        }
    }

    /**
     * 从JSON字符串反序列化为指定类型的对象。
     *
     * @param jsonStr JSON字符串
     * @param type    目标类型
     * @param <T>     泛型类型
     * @return 反序列化后的对象
     */
    protected static <T> T fromJson(String jsonStr, Type type) {
        try {
            return gson.fromJson(jsonStr, type);
        } catch (Exception e) {
            LogUtils.logger("fromJson:"+e.toString());
            throw new NullPointerException("Failed to deserialize JSON string to object");
        }
    }
}